import 'package:enjoy_plus_bryant/utils/eventbus.dart';
import 'package:enjoy_plus_bryant/utils/http.dart';
import 'package:enjoy_plus_bryant/utils/toast.dart';
import 'package:flutter/material.dart';

class HouseDetail extends StatefulWidget {
  HouseDetail({super.key, required this.id});

  String id;
  @override
  State<HouseDetail> createState() => _HouseDetailState();
}

class _HouseDetailState extends State<HouseDetail> {
  Map houseDetail = {};
  Widget tagBuilder(int status) {
    List tagList = [
      {},
      {
        "bgColor": const Color.fromARGB(50, 91, 177, 227),
        "textColor": const Color.fromARGB(255, 85, 145, 175),
        "title": "审核中",
      },
      {
        "bgColor": const Color.fromARGB(255, 91, 243, 91),
        "textColor": const Color.fromRGBO(1, 50, 1, 1),
        "title": "审核成功",
      },
      {
        "bgColor": const Color.fromARGB(255, 247, 129, 133),
        "textColor": const Color.fromARGB(255, 84, 1, 1),
        "title": "审核失败",
      },
    ];

    return Container(
      padding: const EdgeInsets.only(left: 5, right: 5, top: 2, bottom: 2),
      decoration: BoxDecoration(
        color: tagList[status]['bgColor'],
        borderRadius: BorderRadius.circular(5),
      ),
      child: Text(
        '${tagList[status]['title']}',
        style: TextStyle(color: tagList[status]['textColor']),
      ),
    );
  }

  // 获取房屋详情
  void getHouseDetail(String id) async {
    try {
      var res = await http.get('/room/${id}');
      if (res['code'] != 10000) {
        return ToastUtil.showError(res['message']);
      }
      setState(() {
        houseDetail = res['data'];
      });
    } catch (e) {
      ToastUtil.showError(e.toString());
    }
  }

  // 点击删除房屋按钮
  removeHouse() {
    // 弹窗提醒
    return showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: Text('温馨提示'),
          content: Text('确定删除吗？'),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text('取消', style: TextStyle(color: Colors.red)),
            ),
            TextButton(
              onPressed: () async {
                // 点击确定就发请求删除
                try {
                  var res = await http.delete('/room/${widget.id}');
                  print(res);
                  if (res['code'] != 10000) {
                    return ToastUtil.showError(res['message']);
                  }
                  eventBus.fire(RemoveRefresh());
                  Navigator.pop(context);
                  ToastUtil.showSuccess('删除成功');
                } catch (e) {
                  ToastUtil.showError('删除失败');
                } finally {
                  Navigator.pop(context);
                }
              },
              child: Text('确定'),
            ),
          ],
        );
      },
    );
  }

  // 点击编辑房屋
  editHouse() {
    //  先跳转，携带id
    Navigator.pushNamed(context, '/house_form', arguments: {'id': widget.id});
  }

  @override
  void initState() {
    super.initState();
    getHouseDetail(widget.id);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('房源详情'), centerTitle: true),
      body: Stack(
        alignment: Alignment.bottomCenter,
        children: [
          ListView(
            padding: const EdgeInsets.only(bottom: 100),
            children: [
              // 房屋信息
              Container(
                padding: const EdgeInsets.all(10),
                child: const Text(
                  '房屋信息',
                  style: TextStyle(
                    color: Color.fromARGB(255, 97, 94, 94),
                    fontSize: 16,
                  ),
                ),
              ),
              Container(
                color: Colors.white,
                padding: const EdgeInsets.only(
                  left: 10,
                  right: 10,
                  top: 15,
                  bottom: 15,
                ),
                child: Row(
                  children: [
                    Expanded(child: Text('${houseDetail['point']}')),
                    tagBuilder(houseDetail['status'] ?? 1),
                  ],
                ),
              ),
              // 业主信息
              Container(
                padding: const EdgeInsets.all(10),
                child: const Text(
                  '业主信息',
                  style: TextStyle(
                    color: Color.fromARGB(255, 97, 94, 94),
                    fontSize: 16,
                  ),
                ),
              ),
              Container(
                color: Colors.white,
                padding: const EdgeInsets.only(
                  left: 10,
                  right: 10,
                  top: 15,
                  bottom: 15,
                ),
                child: Row(
                  children: [
                    SizedBox(width: 60, child: Text('房间号')),
                    SizedBox(width: 30),
                    Expanded(
                      child: Text(
                        '${houseDetail['building']}${houseDetail['room']}',
                      ),
                    ),
                  ],
                ),
              ),
              Container(
                color: Colors.white,
                padding: const EdgeInsets.only(
                  left: 10,
                  right: 10,
                  top: 15,
                  bottom: 15,
                ),
                child: Row(
                  children: [
                    SizedBox(width: 60, child: Text('业主')),
                    SizedBox(width: 30),
                    Expanded(child: Text('${houseDetail['name']}')),
                  ],
                ),
              ),
              Container(
                color: Colors.white,
                padding: const EdgeInsets.only(
                  left: 10,
                  right: 10,
                  top: 15,
                  bottom: 15,
                ),
                child: Row(
                  children: [
                    SizedBox(width: 60, child: Text('手机号')),
                    SizedBox(width: 30),
                    Expanded(child: Text('${houseDetail['mobile']}')),
                  ],
                ),
              ),
              const SizedBox(height: 30),
              Container(
                padding: const EdgeInsets.all(10),
                color: Colors.white,
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    const Text('本人身份证照片'),
                    Image.network(
                      '${houseDetail['idcardFrontUrl'] ?? 'https://t9.baidu.com/it/u=1210692601,441083570&fm=193'}',
                      height: 200,
                    ),
                    Image.network(
                      '${houseDetail['idcardBackUrl'] ?? 'https://t9.baidu.com/it/u=1210692601,441083570&fm=193'}',
                      height: 200,
                    ),
                  ],
                ),
              ),
            ],
          ),
          Container(
            padding: const EdgeInsets.all(10),
            width: MediaQuery.of(context).size.width,
            height: 80,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: [
                ElevatedButton(
                  onPressed: () {
                    removeHouse();
                  },
                  child: const Column(
                    children: [
                      SizedBox(height: 8, width: 120),
                      Icon(Icons.delete),
                      Text('删除房屋'),
                      SizedBox(height: 8),
                    ],
                  ),
                ),
                ElevatedButton(
                  onPressed: () {
                    editHouse();
                  },
                  child: const Column(
                    children: [
                      SizedBox(height: 8, width: 120),
                      Icon(Icons.edit),
                      Text('修改房屋'),
                      SizedBox(height: 8),
                    ],
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
